package ec.edu.ucacue.siop.proceso.manejoMaterial;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Query;

import org.hibernate.Session;

import ec.edu.ucacue.siop.dao.material.MaterialDAO;
import ec.edu.ucacue.siop.dao.material.MaterialDAOImpl;
import ec.edu.ucacue.siop.dao.material.PropiedadDAO;
import ec.edu.ucacue.siop.dao.material.PropiedadDAOImpl;
import ec.edu.ucacue.siop.modelo.material.Material;
import ec.edu.ucacue.siop.modelo.material.Propiedad;
import ec.edu.ucacue.siop.utilidades.HibernateUtil;

public class ManejoMaterial {
	private String error;
	
	public String getError() {
		return error;
	}

	public void setError(String error) {
		this.error = error;
	}

	public boolean agregarPropiedadAMaterial(long idMaterial, long idPropiedad) {
		MaterialDAO matDao = new MaterialDAOImpl();
		PropiedadDAO propDao = new PropiedadDAOImpl();
		Session ses = HibernateUtil.beginTransaction();
		Material mat = matDao.findByID(Material.class, idMaterial);
		if(mat== null) {
			error ="No existe un registro de material para el id " + Long.toString(idMaterial);
			HibernateUtil.closeSession();
			return false;
		}
		Propiedad prop = propDao.findByID(Propiedad.class, idPropiedad);
		if(prop == null){
			error = "No exsite un registro de propiedad para el id " + Long.toString(idMaterial);
			HibernateUtil.closeSession();
			return false;
		}
		matDao.agregarPropiedad(mat, prop);
		matDao.save(mat);
		HibernateUtil.commitTransaction();
		HibernateUtil.closeSession();
		return true;
	}
	public boolean agregarListaPropiedaMaterial(long idMaterial, long[] arreglo) {
		MaterialDAO matDao = new MaterialDAOImpl();
		PropiedadDAO propDao = new PropiedadDAOImpl();
		Session ses = HibernateUtil.beginTransaction();
		Material mat = matDao.findByID(Material.class, idMaterial);
		if(mat== null) {
			error ="No existe un registro de material para el id " + Long.toString(idMaterial);
			HibernateUtil.closeSession();
			return false;
		}
		for(int i=0;i<arreglo.length; i++){
			if(arreglo[i]!=0) {
				Propiedad prop = propDao.findByID(Propiedad.class, arreglo[i]);
				if(prop == null){
					error = "No exsite un registro de propiedad para el id " + Long.toString(idMaterial);
					HibernateUtil.closeSession();
					return false;
				}
				matDao.agregarPropiedad(mat, prop);
			}
		}
		matDao.save(mat);
		HibernateUtil.commitTransaction();
		HibernateUtil.closeSession();
		return true;
	}
}
